{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Example to show how to get pixel MOLA elevation\n",
    "#### Currently very brute force\n",
    "some example code from: http://www.geodose.com/2018/03/create-elevation-profile-generator-python.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#grab elevation value from Mars WMS elevation service\n",
    "import math, os\n",
    "from string import Template"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Function to return elevation in meters from MOLA Web Mapping Server (WMS)\n",
    "#requires GDAL binaries installed - specifiaclly\n",
    "# requires: gdallocationinfo\n",
    "# Although this could also be done in code (using GDAL functions calls).\n",
    "#\n",
    "# How this works - The gdal_XML file setups up the WMS service. GDAL acts as if this a local file thus\n",
    "# one could also simply use gdal_translate to create a local Tiff (or other format). For more info:\n",
    "# http://planetarygis.blogspot.com/2014/09/tips-to-interact-with-astros-wms-maps.html\n",
    "# -Trent Hare, thare@usgs.gov\n",
    "\n",
    "def pointElevationMOLA(lon,lat):\n",
    "\n",
    "    #setup 1x1 degree tile by flooring the input Lon and Lat\n",
    "    min_lon = math.floor(lon) \n",
    "    max_lon = min_lon +1\n",
    "    min_lat = math.floor(lat) \n",
    "    max_lat = min_lat +1\n",
    "\n",
    "    #odd workaround for edge\n",
    "    if  (lon == math.floor(lon)):\n",
    "        min_lon = min_lon - 0.1\n",
    "        max_lon = max_lon - 0.1\n",
    "    if  (lat == math.floor(lat)):\n",
    "        min_lat = min_lat - 0.1\n",
    "        max_lat = max_lat - 0.1\n",
    "\n",
    "    #build this XML file.\n",
    "    gdal_XML = Template(\"\"\"<GDAL_WMS>\n",
    "      <Service name=\"WMS\">\n",
    "        <Version>1.1.1</Version>\n",
    "        <ServerUrl>http://wms.wr.usgs.gov/cgi-bin/mapserv?map=/maps/mars/mars_simp_cyl_elev.map</ServerUrl>\n",
    "        <SRS>EPSG:4326</SRS>\n",
    "        <ImageFormat>image/tiff</ImageFormat>\n",
    "        <Layers>MOLA_elev</Layers>\n",
    "      </Service>\n",
    "      <DataWindow>\n",
    "        <UpperLeftX>$minLon</UpperLeftX>\n",
    "        <UpperLeftY>$maxLat</UpperLeftY>\n",
    "        <LowerRightX>$maxLon</LowerRightX>\n",
    "        <LowerRightY>$minLat</LowerRightY>\n",
    "         <SizeX>128</SizeX>\n",
    "         <SizeY>128</SizeY>\n",
    "      </DataWindow>\n",
    "      <Projection>EPSG:4326</Projection>\n",
    "      <BandsCount>1</BandsCount>\n",
    "      <DataType>Int16</DataType>\n",
    "    </GDAL_WMS>\n",
    "    \"\"\")\n",
    "\n",
    "    gdal_WMS = gdal_XML.substitute(minLon=min_lon, maxLon=max_lon, minLat=min_lat, maxLat=max_lat)\n",
    "    xmlFilename = \"gdal_WMS.xml\"\n",
    "    outFile = open( xmlFilename ,'w')\n",
    "    outFile.write( gdal_WMS  )\n",
    "    outFile.close()\n",
    "\n",
    "    cmd = \"gdallocationinfo -valonly -geoloc %s %s %s\" % (xmlFilename, str(lon), str(lat))\n",
    "    #print(cmd)\n",
    "    elevValue = os.popen(cmd).read()\n",
    "    try:\n",
    "        return int(elevValue)\n",
    "    except:\n",
    "        return -9999"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1529\n"
     ]
    }
   ],
   "source": [
    "molaElev = pointElevationMOLA(280.5,45)\n",
    "print(molaElev)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Now let's try a brute force elevation profile"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here we are going to setup a couple more functions - from:\n",
    "http://www.geodose.com/2018/03/create-elevation-profile-generator-python.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "#HAVERSINE FUNCTION - add variable radius\n",
    "def haversine(lat1,lon1,lat2,lon2,radius):\n",
    "   \n",
    "    lat1_rad=math.radians(lat1)\n",
    "    lat2_rad=math.radians(lat2)\n",
    "    lon1_rad=math.radians(lon1)\n",
    "    lon2_rad=math.radians(lon2)\n",
    "    delta_lat=lat2_rad-lat1_rad\n",
    "    delta_lon=lon2_rad-lon1_rad\n",
    "    a=math.sqrt((math.sin(delta_lat/2))**2+math.cos(lat1_rad)*math.cos(lat2_rad)*(math.sin(delta_lon/2))**2)\n",
    "    d=2*radius*math.asin(a)\n",
    "    return d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<img src=\"http://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/mars/mars_simp_cyl.map&SERVICE=WMS&VERSION=1.1.1&SRS=EPSG:4326&STYLES=&REQUEST=GetMap&FORMAT=image%2Fjpeg&LAYERS=MDIM21&BBOX=221,13,231,23&WIDTH=500&HEIGHT=500\"/>"
      ],
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import requests\n",
    "from IPython.display import display, Image, SVG, Math, YouTubeVideo\n",
    "\n",
    "#start and end points -- a diagnal across Olympus Mons\n",
    "P1=[13,221]\n",
    "P2=[23,231]\n",
    "\n",
    "mars_WMS = Template(\"http://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/mars/mars_simp_cyl.map&SERVICE=WMS&VERSION=1.1.1&SRS=EPSG:4326&STYLES=&REQUEST=GetMap&FORMAT=image%2Fjpeg&LAYERS=MDIM21&BBOX=$lon1,$lat1,$lon2,$lat2&WIDTH=500&HEIGHT=500\")\n",
    "cmd = mars_WMS.substitute(lon1=P1[1], lat1=P1[0], lon2=P2[1],  lat2=P2[0])\n",
    "\n",
    "#print(cmd)\n",
    "#marsImage = requests.get(cmd).content\n",
    "\n",
    "\n",
    "from IPython.display import Image\n",
    "Image(url=cmd)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-1497, -1448, -881, -694, -431, 55, 768, 1582, 2463, 5418, 7472, 8714, 9896, 11218, 12816, 14358, 15596, 17027, 18636, 19871, 20545, 18461, 18114, 18761, 19544, 18568, 16917, 15253, 13802, 12199, 10720, 9246, 7940, 7027, 5796, 1561, 800, 173, -377, -676, -826]\n"
     ]
    }
   ],
   "source": [
    "#Number of points\n",
    "s=40\n",
    "interval_lat=(P2[0]-P1[0])/s #interval for latitude\n",
    "interval_lon=(P2[1]-P1[1])/s #interval for longitude\n",
    "\n",
    "#variable for starting point\n",
    "lat0=P1[0]\n",
    "lon0=P1[1]\n",
    "\n",
    "#Latitude and Longitude List\n",
    "lat_list=[lat0]\n",
    "lon_list=[lon0]\n",
    "elev_list=[]\n",
    "\n",
    "#Gererate list of lat/lons\n",
    "for i in range(s):\n",
    "    lat_step=lat0+interval_lat\n",
    "    lon_step=lon0+interval_lon\n",
    "    lon0=lon_step\n",
    "    lat0=lat_step\n",
    "    lat_list.append(lat_step)\n",
    "    lon_list.append(lon_step)\n",
    "    \n",
    "#Get distances between points\n",
    "marsRadius = 3396190.0\n",
    "d_list=[]\n",
    "for j in range(len(lat_list)):\n",
    "    lat_p=lat_list[j]\n",
    "    lon_p=lon_list[j]\n",
    "    dp=haversine(lat0,lon0,lat_p,lon_p, marsRadius)/1000 #km\n",
    "    d_list.append(dp)\n",
    "d_list_rev=d_list[::-1] #reverse list\n",
    "\n",
    "#Brute force call WMS per point - not optimal by any means!\n",
    "elev_list=[{}]*len(lat_list)\n",
    "for i in range(len(lat_list)):\n",
    "    elev_list[i]=pointElevationMOLA(lon_list[i],lat_list[i])\n",
    "\n",
    "print(elev_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nqVnge42FtP4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x18b2aa7a7b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#Stats\n",
    "mean_elev=round((sum(elev_list)/len(elev_list)),3)\n",
    "min_elev=min(elev_list)\n",
    "max_elev=max(elev_list)\n",
    "distance=d_list_rev[-1]\n",
    "\n",
    "#Plot Elevation Profile\n",
    "base_reg=min_elev - 100\n",
    "plt.figure(figsize=(16,4))\n",
    "plt.plot(d_list_rev,elev_list)\n",
    "plt.plot([0,distance],[min_elev,min_elev],'--g',label='min: '+str(min_elev)+' m')\n",
    "plt.plot([0,distance],[max_elev,max_elev],'--r',label='max: '+str(max_elev)+' m')\n",
    "plt.plot([0,distance],[mean_elev,mean_elev],'--y',label='ave: '+str(mean_elev)+' m')\n",
    "plt.fill_between(d_list_rev,elev_list,base_reg,alpha=0.1)\n",
    "plt.text(d_list_rev[0],elev_list[0],\"P1\")\n",
    "plt.text(d_list_rev[-1],elev_list[-1],\"P2\")\n",
    "plt.xlabel(\"Distance(km)\")\n",
    "plt.ylabel(\"Elevation(m)\")\n",
    "plt.grid()\n",
    "plt.legend(fontsize='small')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
